// use tokio::process::Command;
//
// #[tokio::main]
// async fn main() -> Result<(), Box<dyn std::error::Error>> {
//   // Like above, but use `output` which returns a future instead of
//   // immediately returning the `Child`.
//   // let output = Command::new("echo").arg("hello").arg("world").output();
//   //
//   // let output = output.await?;
//   //
//   // assert!(output.status.success());
//   // assert_eq!(output.stdout, b"hello world\n");
//
//   let video_path =
//     "/home/timly/Desktop/gitworkspace/rust_stream_media_m3u8/tt/test.mp4";
//   // 在执行 ffmpeg 前检查文件
//   if !std::path::Path::new(video_path).exists() {
//     println!("视频文件不存在");
//   }
//
//   // 检查文件是否可读
//   if let Err(e) = std::fs::File::open(video_path) {
//     println!("无法打开视频文件: {}", e);
//   }
//
//   let output = tokio::process::Command::new("ffprobe")
//     .arg("-i")
//     .arg(video_path)
//     .arg("-v")
//     .arg("error")
//     .arg("-select_streams")
//     .arg("v:0")
//     .arg("-show_entries")
//     .arg("stream=width,height,bit_rate")
//     .arg("-of")
//     .arg("default=noprint_wrappers=1:nokey=1")
//     .stdout(std::process::Stdio::piped())
//     .stderr(std::process::Stdio::piped())
//     .output()
//     .await
//     .map_err(|e| format!("ffmpeg执行失败: {}", e))?;
//
//   // assert!(output.status.success());
//
//   // assert_eq!(output.stdout, b"hello world\n");
//   if !output.status.success() {
//     let stderr = String::from_utf8_lossy(&output.stderr);
//     // 常见的错误情况
//     if stderr.contains("Invalid data found when processing input") {
//       println!("不支持的视频格式或文件损坏");
//     } else if stderr.contains("No such file or directory") {
//       println!("文件不存在或路径错误");
//     } else if stderr.contains("Permission denied") {
//       println!("没有文件读取权限");
//     }
//     println!("解析视频信息失败");
//   }
//
//   Ok(())
// }

/*
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  let video_path =
    "/home/timly/Desktop/gitworkspace/rust_stream_media_m3u8/tt/test.mp4";

  // 先用简单的命令测试
  let test_output = tokio::process::Command::new("ffmpeg")
    .arg("-i")
    .arg(video_path)
    .arg("-f")
    .arg("null")
    .arg("-")
    .output()
    .await
    .map_err(|e| format!("ffmpeg测试执行失败: {}", e))?;

  if !test_output.status.success() {
    let stderr = String::from_utf8_lossy(&test_output.stderr);
    eprintln!("FFmpeg 测试错误: {}", stderr);
  }

  Ok(())
}
*/

// 异步文件流

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  Ok(())
}
